/**
 * 
 * @project
 * @author yanwl
 * @version 1.0
 * @data 2014-08-21
 */
package com.chnbst.bstyun.core.common;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class SignUtil {
    
    /**
     * 判断字符串是否为空
     * @param str
     * @return boolean
     */
    public static boolean isEmpty(String str) {
		if(str != null && !"".equals(str)) {
			return false;
		}else {
			return true;
		}
	}
	
    /**
     * 判断字符串不为空
     * @param str
     * @return boolean
     */
	public static boolean isNotEmpty(String str){
		return !isEmpty(str);
	}
	
	/**
	 * 时间转换为标准格式的字符串
	 * @param date 时间参数
	 * @param format 时间要转换的字符串格式（如 2014-08-20 12:30:34）
	 */
	
	public static String time2str(Date date,String format) {
		DateFormat df = new SimpleDateFormat(format);
		return df.format(date);
	}
	
	/**
	 * 字符串转换为标准格式的时间
	 * @param dateString 字符串时间
	 * @param format 字符串时间要转换的时间格式（如 2014-08-20 12:30:34）
	 */
	public static Date str2Date(String dateString,String format) {
		SimpleDateFormat sdf = new SimpleDateFormat(format);
		Date date = null;
		try {
			date = sdf.parse(dateString);
		} catch (ParseException e) {
			e.printStackTrace();
		}
		return date;
	}
	
	
	/**
	 * 获取结束时间
	 * gc.add(1,-1)表示年份减一.
	 * gc.add(2,-1)表示月份减一.
	 * gc.add(3.-1)表示周减一.
	 * gc.add(5,-1)表示天减一.
	 * @param field 时间单位
	 * @param value 加减的数值（增加是 +1）
	 * @param date  起止日期
	 */
	public static Date getOvertime(int field ,int value,Date date) {
		GregorianCalendar gc =new GregorianCalendar();
		SimpleDateFormat sf  =new SimpleDateFormat("yyyy-MM-dd");
		gc.setTime(date);
		gc.add(field,value);
		gc.set(gc.get(Calendar.YEAR),gc.get(Calendar.MONTH),gc.get(Calendar.DATE));
		return SignUtil.str2Date(sf.format(gc.getTime()),"yyyy-MM-dd");
	}
	
	/**
	 * txt格式文字转换为jsp页面上识别样式的文字
	 * @param str txt格式文字
	 * @return jsp页面上识别样式的文字
	 */
	public static String txt2jsp(String str) {
		String in = str;
		String content="";
		   StringBuffer ou = new StringBuffer();   
		     for(int i = 0; in != null && i < in.length(); i++)   
		     {   
		             char   c   =   in.charAt(i);   
		             if   (c   ==   '\'')   
		            	 ou.append("&#039;");   
		             else   if   (c == '\"')   
		            	 ou.append("&#034;");   
		             else   if   (c == '<')   
		            	 ou.append("&lt;");   
		             else   if   (c == '>') 
		            	 ou.append("&gt;");   
		             else   if   (c == '&')   
		            	 ou.append("&amp;");   
		             else   if   (c == ' ')   
		            	 ou.append("&nbsp;");   
		             else   if   (c   ==   '\n')   
		            	 ou.append("<br>");   
		             else   
		            	 ou.append(c);   
		     }   
		 content = ou.toString();
		 return content;
	}
	
	/**
	 * 手机号的验证
	 * @param mobiles 手机号
	 * @return boolean
	 */
	public static boolean isMobileNO(String mobiles){

		Pattern p = Pattern.compile("^0?(13[0-9]|15[012356789]|17[0678]|18[0123456789]|14[57])[0-9]{8}$");

		Matcher m = p.matcher(mobiles);

		return m.matches();
	}
	
	/**
	 * 判断当前时间是否是工作时间
	 * @return boolean
	 */
	@SuppressWarnings("static-access")
	public static boolean workTime(){
		Date date = new Date();
		Calendar cal=Calendar.getInstance();
		cal.setTime(date); 
		if(cal.get(cal.DAY_OF_WEEK)>1 && cal.get(cal.DAY_OF_WEEK) <7 && cal.get(cal.HOUR_OF_DAY)>6 && cal.get(cal.HOUR_OF_DAY)<17 ){
			return true;
		}
		else{
			return false;
		}
	}
	
	/**
	 * 获取一定长度的字符串编号
	 * @return 字符串编号
	 */
	public static String getFormatStr(int id,int len) {
		String sId = String.valueOf(id);
		String str = "";
		if(sId.length() < len) {
			for (int i = 0; i < len - sId.length(); i++) {
				str += "0";
			}
		}
		str += sId;
		return str;
	}
	
	/**
	 * 字节转化为16进制
	 * @return 16进制字符串
	 */
	public static String byte2HexStr(byte mByte) {
        char[] Digit = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };
        char[] tempArr = new char[2];
        tempArr[0] = Digit[(mByte >>> 4) & 0X0F];
        tempArr[1] = Digit[mByte & 0X0F];

        String s = new String(tempArr);
        return s;
    }
	
	/**
	 * 查找数组a中有而数组b中没有的数据
	 * @param a[] 数组a
	 * @param b[] 数组b
	 * @return 数组a中有而数组b中没有的数据
	 */
	public static String getDelArr(int a[], int b[]) {
		Arrays.sort(b);
		Arrays.sort(a);
		String str = "";
	    for (int i = 0, size = a.length; i < size; i++) {
		    int index = Arrays.binarySearch(b, a[i]);
		    if (index < 0) {
		    	str += a[i]+";";
		    }
	    }
	    return str;
	}
	
	/**
	 * 转换成16进制
	 * @param time
	 * @return
	 */
	public static String toHex(){    
		long time = new Date().getTime();
		return Integer.toHexString((int)time);
	}
	
	/**
	 * 判断密码复杂等级
	 * @param str 判断的字符串
	 * @return 0 : 弱    1：中     2：强
	 */
	public static int checkPwd(String str){    
		int level = 0;
		String pattern1 = "^[A-Za-z0-9]+$";
		String pattern2 = "^[0-9]+$";
		if(str.matches(pattern2)) {
			level = 0;
		}else {
			if(str.matches(pattern1)) {
				level = 1;
			}else {
				level = 2;
			}
		}
		return level;
	}

		
	public static void main(String[] args){
		//String a ="2013-08-09 08:10:19";
//		System.out.println(getOvertime(5, +20,new Date()));
//		System.out.println(new Date());
		System.out.println(checkPwd("rt235"));
		
	}
}

